home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import gobject
- import gtk
- import HIG
- from gettext import gettext as _
-
- class ToolbarSearchEntry(gtk.HBox):
- __gproperties__ = {
- 'search_timeout': (gobject.TYPE_UINT, 'search timeout', 'search signal rate limiter (in ms)', 0, 5000, 300, gobject.PARAM_READWRITE) }
- __gsignals__ = {
- 'search': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, [
- gobject.TYPE_STRING]),
- 'activate': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []) }
-
- def __init__(self):
- self.entry = None
- self.timeout = 0
- self.is_a11y_theme = False
- self.search_timeout = 300
- self.menu = None
- gtk.HBox.__gobject_init__(self)
- self.set_spacing(HIG.PAD_NORMAL)
- self.set_border_width(HIG.PAD_NORMAL)
- settings = gtk.settings_get_for_screen(self.get_screen())
- theme = settings.get_property('gtk-theme-name')
- if not theme == 'HighContrast':
- pass
- self.is_a11y_theme = theme == 'LowContrast'
- label = gtk.Label()
- label.set_text_with_mnemonic(_('_Filter:'))
- label.set_justify(gtk.JUSTIFY_RIGHT)
- self.pack_start(label, False, True, 0)
- self.entry = gtk.Entry()
- if gtk.__dict__.has_key('ENTRY_ICON_PRIMARY'):
- self.entry.set_icon_from_stock(gtk.ENTRY_ICON_PRIMARY, gtk.STOCK_FIND)
- self.entry.set_icon_from_stock(gtk.ENTRY_ICON_SECONDARY, gtk.STOCK_CLEAR)
- self.entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False)
- self.entry.set_icon_activatable(gtk.ENTRY_ICON_SECONDARY, False)
-
- label.set_mnemonic_widget(self.entry)
- self.pack_start(self.entry, True, True, 0)
- self.entry.connect('changed', self.on_changed)
- self.entry.connect('focus_out_event', self.on_focus_out_event)
- self.entry.connect('activate', self.on_activate)
- self.entry.connect('icon-press', self.on_icon_press)
-
-
- def do_get_property(self, property):
- if property.name == 'search_timeout':
- return self.search_timeout
- raise AttributeError, 'unknown property %s' % property.name
-
-
- def do_set_property(self, property, value):
- if property.name == 'search_timeout':
- self.search_timeout = value
- else:
- raise AttributeError, 'unknown property %s' % property.name
- return property.name == 'search_timeout'
-
-
- def clear(self):
- if self.timeout != 0:
- gobject.source_remove(self.timeout)
- self.timeout = 0
-
- self.entry.set_text('')
-
-
- def get_text(self):
- return self.entry.get_text()
-
-
- def set_text(self, text):
- self.entry.set_text(text)
-
-
- def check_style(self):
- if self.is_a11y_theme:
- return None
- bg_colour = gtk.gdk.color_parse('#f7f7be')
- fg_colour = gtk.gdk.color_parse('#000000')
- text = self.entry.get_text()
- if len(text) > 0:
- self.entry.modify_text(gtk.STATE_NORMAL, fg_colour)
- self.entry.modify_base(gtk.STATE_NORMAL, bg_colour)
- else:
- self.entry.modify_text(gtk.STATE_NORMAL, None)
- self.entry.modify_base(gtk.STATE_NORMAL, None)
- self.queue_draw()
-
-
- def on_changed(self, UNUSED):
- self.check_style()
- if self.timeout != 0:
- gobject.source_remove(self.timeout)
- self.timeout = 0
-
- has_text = self.entry.get_text_length() > 0
- if has_text:
- self.timeout = gobject.timeout_add(self.search_timeout, self.on_search_timeout)
- else:
- self.on_search_timeout()
- if gtk.__dict__.has_key('ENTRY_ICON_PRIMARY'):
- self.entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, has_text)
- self.entry.set_icon_activatable(gtk.ENTRY_ICON_SECONDARY, has_text)
-
-
-
- def on_search_timeout(self):
- self.emit('search', self.entry.get_text())
- self.timeout = 0
- return False
-
-
- def on_focus_out_event(self, UNUSED_widget, UNUSED_event):
- if self.timeout == 0:
- return False
- gobject.source_remove(self.timeout)
- self.timeout = 0
- self.emit('search', self.entry.get_text())
- return False
-
-
- def searching(self):
- return self.entry.get_text() != ''
-
-
- def on_activate(self, UNUSED_entry):
- self.emit('search', self.entry.get_text())
-
-
- def grab_focus(self):
- self.entry.grab_focus()
-
-
- def set_drop_down_menu(self, menu):
- if not gtk.__dict__.has_key('ENTRY_ICON_PRIMARY'):
- return None
- if menu:
- self.entry.set_icon_sensitive(gtk.ENTRY_ICON_PRIMARY, True)
- self.entry.set_icon_activatable(gtk.ENTRY_ICON_PRIMARY, True)
- self.menu = menu
- else:
- self.entry.set_icon_sensitive(gtk.ENTRY_ICON_PRIMARY, False)
- self.entry.set_icon_activatable(gtk.ENTRY_ICON_PRIMARY, False)
- self.menu = None
-
-
- def on_icon_press(self, UNUSED, icon_position, event):
- if icon_position == gtk.ENTRY_ICON_SECONDARY:
- self.set_text('')
- return None
-
-
- gobject.type_register(ToolbarSearchEntry)
-